package com.utooo.bid.service;

import dev.langchain4j.data.message.AiMessage;
import dev.langchain4j.model.StreamingResponseHandler;
import dev.langchain4j.service.MemoryId;
import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.V;
import reactor.core.publisher.Flux;

import static com.utooo.bid.prompt.BidPromptTemplate.BID_BUSINESS_CATALOG_CONTENT_PROMPT_TEMPLATE;
import static com.utooo.bid.prompt.BidPromptTemplate.BID_TECH_CATALOG_CONTENT_PROMPT_TEMPLATE;

public interface StreamingAssistant {

    @UserMessage(BID_BUSINESS_CATALOG_CONTENT_PROMPT_TEMPLATE)
    Flux<String> generateBusiCatalogContent(@MemoryId String memoryId);

    @UserMessage(BID_TECH_CATALOG_CONTENT_PROMPT_TEMPLATE)
    Flux<String> generateTechCatalogContent(@MemoryId String memoryId);

    @UserMessage("{{message}}")
    void generate(@V("message") String message, @MemoryId String memoryId, StreamingResponseHandler<AiMessage> var2);
}